package net.schastny.shopmanager.web;
import java.util.Map;

import net.schastny.shopmanager.domain.Shop;
import net.schastny.shopmanager.service.ShopService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class ShopController {
	@Autowired
    private ShopService shopService;

	/*RequestMapping - Аннотация используется для маппинга урл-адреса запроса на указанный метод или класс. 
	 * Запрос можно маппить как на метод класса, так и на целый класс.
	 *  Допускается указывать конкретный HTTP-метод, который будет обрабатываться (GET/POST), 
	 *  передавать параметры запроса.
	 */
	@RequestMapping("/shop")
    public String listShop(Map<String, Object> map) {

        map.put("shop", new Shop());
        map.put("shopList", shopService.listShop());

        return "shop";
    }
	
/*	@RequestMapping("/")
    public String home() {
        return "redirect:/shop";
    }
*/
	/*ModelAttribute - Аннотация, связывающая параметр метода или возвращаемое значение метода с атрибутом модели,
	 *  которая будет использоваться при выводе jsp-страницы.
	 */
	@RequestMapping(value = "/addShop", method = RequestMethod.POST)
    public String addShop(@ModelAttribute("shop") Shop shop,
            BindingResult result) {

        shopService.addShop(shop);

        return "redirect:/shop";
    }
	/*PathVariable - Аннотация, которая показывает, что параметр метода должен быть связан с переменной из урл-адреса. 
	 */
	@RequestMapping("/deleteShop/{shopId}")
    public String deleteShop(@PathVariable("shopId") Integer shopId) {

        shopService.removeShop(shopId);

        return "redirect:/shop";
    }	

}
